# -*- coding: utf-8 -*-
'''
Creado en 08/11/2009

GNU GENERAL PUBLIC LICENSE
Version 2, June 1991
Copyright (C) 1989, 1991 Free Software Foundation, Inc.
51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA
@author: Openagro
'''
#import sip
#sip.setapi('QString', 2)
#sip.setapi('QVariant', 2)

from PyQt4 import QtCore, QtGui
import classwizard_rc
from Secado.secado import Secador


class ClassWizard(QtGui.QWizard):
    """Instancia el widget de configuración del problema de secado"""
    def __init__(self, parent=None):
        super(ClassWizard, self).__init__(parent)
        self.flag = 0
        self.resize(600, 500)
        self.setWizardStyle(QtGui.QWizard.MacStyle) 
        self.addPage(IntroPage())
        self.addPage(datosAPage())
        self.addPage(datosBPage())
        self.addPage(datosCPage())
        self.addPage(datosDPage())
        self.addPage(ConclusionPage())

        
        self.setPixmap(QtGui.QWizard.BackgroundPixmap,
                QtGui.QPixmap(':/images/background.png'))

        self.setWindowTitle("Configurar el problema")

    def accept(self):
        """Se ejecuta al terminar de configurar el problema, cuando se da click en ejecutar
        captura los valores ingresados por el usuario y llama al algoritmo de calculo numerico"""
        #Aire
        self.flag = 1
        caudal = self.field('Caudal')#m3/min-m2
        Tair = self.field('T')#C
        HRair = self.field('HR')#%
        #Grano
        Tig = self.field('Tig')#C
        Hig = self.field('Hig')#bh
        Hfg = self.field('Hfg')#bh
        #Lugar
        msnm = self.field('msnm')#m
        Tamb = self.field('Tamb')#C
        #sistema de sacado
        STS = self.field('STS')#m2
        ECG = self.field('ECG')#m
        int = self.field('int')#hr
        intInv = self.field('intInv')#hr
        #presecado
        HIp = self.field('HIp')#%bh
        TIp = self.field('TIp')#C
        ECGp = self.field('ECGp')#m
        
        self.caudal = caudal.toDouble()[0]
        self.Tair = Tair.toDouble()[0]
        self.HRair = HRair.toDouble()[0]
        self.Tig = Tig.toDouble()[0]
        self.Hig = Hig.toDouble()[0]
        self.Hfg = Hfg.toDouble()[0]
        self.msnm = msnm.toDouble()[0]
        self.Tamb = Tamb.toDouble()[0]
        self.STS = STS.toDouble()[0]
        self.ECG = ECG.toDouble()[0]
        self.int = int.toDouble()[0]
        self.intInv = intInv.toDouble()[0]
        self.HIp = HIp.toDouble()[0]
        self.TIp = TIp.toDouble()[0]
        self.ECGp = ECGp.toDouble()[0]
        
        secador = Secador(self.caudal,self.Tair,self.HRair,self.Tig,self.Hig,self.Hfg,self.msnm,self.Tamb,
                          self.STS,self.ECG,self.int,self.intInv,self.HIp,self.TIp,self.ECGp)

        self.res_camSec = secador.res_camSec
        self.res_camPreSec = secador.res_camPreSec
        self.hide()

class IntroPage(QtGui.QWizardPage):
    """Intro del cuadro de dialogo"""
    def __init__(self, parent=None):
        """Inicialización del Intro"""
        super(IntroPage, self).__init__(parent)

        self.setTitle(u"<span style='color:#fff'>Introducción</span>")
        

        label = QtGui.QLabel("<br><b style='color:#333'>Este cuadro de dialogo le permitira configurar el "
                "secador a modelar, incluyendo los parametros necesarios del mo"
                "delo de Thompson las caracteristicas del secador, del grano, del "
                "del ambiente externo, etc. Una vez termine recuerde "
                "guardar los resultados para ejecutar el analisis. </b>"
                )
        label.setWordWrap(True)
        self.setButtonText(QtGui.QWizard.NextButton, "Siguiente")
        self.setButtonText(QtGui.QWizard.BackButton, "Atras")
        self.setButtonText(QtGui.QWizard.BackButton, "Atras")
        layout = QtGui.QVBoxLayout()
        layout.addWidget(label)
        self.setLayout(layout)
        

class datosAPage(QtGui.QWizardPage):
    """Cuadro de dialogo para Variables del aire de secado"""
    def __init__(self, parent=None):
        """Inicialización"""
        super(datosAPage, self).__init__(parent)
        self.setTitle("<b style='color:#eee'>Variables del aire de secado</b>")
        Tlabel = QtGui.QLabel("<b style='color:#333'>Temperatura: </b>")
        HRlabel = QtGui.QLabel("<b style='color:#333'>Humedad Relativa: </b>")
        Clabel = QtGui.QLabel("<b style='color:#333'>Caudal (m3/min-m2): </b>")
        #temperature spin
        self.SpinTBox = QtGui.QSpinBox()
        self.SpinTBox.setRange(10, 100)
        self.SpinTBox.setValue(47)
        self.SpinTBox.setSuffix(u' C')
        #Humedad spin
        self.SpinHRBox = QtGui.QSpinBox()
        self.SpinHRBox.setRange(10, 100)
        self.SpinHRBox.setValue(17)
        self.SpinHRBox.setSuffix(' %')
        #TExtedit caudal
        self.CLineEdit = QtGui.QLineEdit("32")
        #layout
        layout = QtGui.QGridLayout()
        layout.addWidget(Tlabel, 0, 0)
        layout.addWidget(self.SpinTBox, 0, 1)
        layout.addWidget(HRlabel, 1, 0)
        layout.addWidget(self.SpinHRBox, 1, 1)
        layout.addWidget(Clabel, 2, 0)
        layout.addWidget(self.CLineEdit, 2, 1)
        self.setLayout(layout)

        self.registerField('T', self.SpinTBox)
        self.registerField('HR', self.SpinHRBox)
        self.registerField('Caudal', self.CLineEdit)
        
class datosBPage(QtGui.QWizardPage):
    """Cuadro de dialogo para  Variables del producto"""
    def __init__(self, parent=None):
        """Inicialización"""
        super(datosBPage, self).__init__(parent)
        self.setTitle("<b style='color:#eee'>Variables del producto</b>")
        HIlabel = QtGui.QLabel("<b style='color:#333'>Humedad Inicial </b>")
        HFlabel = QtGui.QLabel("<b style='color:#333'>Humedad Final </b>")
        TIlabel = QtGui.QLabel("<b style='color:#333'>Temperatura Inicial </b>")
        #temperature Inicial spin
        self.SpinTigBox = QtGui.QSpinBox()
        self.SpinTigBox.setRange(1, 100)
        self.SpinTigBox.setValue(20)
        self.SpinTigBox.setSuffix(u' C')
        #Humedad Inicial spin
        self.SpinHigBox = QtGui.QSpinBox()
        self.SpinHigBox.setRange(0, 100)
        self.SpinHigBox.setValue(55)
        self.SpinHigBox.setSuffix(u' % bh')
        #Humedad Final spin
        self.SpinHfgBox = QtGui.QSpinBox()
        self.SpinHfgBox.setRange(0, 100)
        self.SpinHfgBox.setValue(12)
        self.SpinHfgBox.setSuffix(u' % bh')
        #layout
        layout = QtGui.QGridLayout()
        layout.addWidget(HIlabel, 0, 0)
        layout.addWidget(self.SpinHigBox, 0, 1)
        layout.addWidget(HFlabel, 1, 0)
        layout.addWidget(self.SpinHfgBox, 1, 1)
        
        layout.addWidget(TIlabel, 2, 0)
        layout.addWidget(self.SpinTigBox, 2, 1)
        
        self.setLayout(layout)

        self.registerField('Tig', self.SpinTigBox)
        self.registerField('Hig', self.SpinHigBox)
        self.registerField('Hfg', self.SpinHfgBox)

class datosCPage(QtGui.QWizardPage):
    """Cuadro de dialogo para  Variables de la zona de secado """
    def __init__(self, parent=None):
        """Inicialización"""
        super(datosCPage, self).__init__(parent)
        self.setTitle("<b style='color:#eee'>Variables de la zona o lugar de secado </b>")
        msnmlabel = QtGui.QLabel("<b style='color:#333'>Altitud </b>")
        TAlabel = QtGui.QLabel("<b style='color:#333'>Temperatura Ambiente:</b>")
        #Msnm spin
        self.SpinmsnmBox = QtGui.QSpinBox()
        self.SpinmsnmBox.setRange(0, 7000)
        self.SpinmsnmBox.setValue(1400)
        self.SpinmsnmBox.setSuffix(u' msnm')
        #Temperatura ambiente spin
        self.SpinTambBox = QtGui.QSpinBox()
        self.SpinTambBox.setRange(0, 100)
        self.SpinTambBox.setValue(20)
        self.SpinTambBox.setSuffix(u' C')
        #layout
        layout = QtGui.QGridLayout()
        layout.addWidget(msnmlabel, 0, 0)
        layout.addWidget(self.SpinmsnmBox, 0, 1)
        layout.addWidget(TAlabel, 1, 0)
        layout.addWidget(self.SpinTambBox, 1, 1)
        self.setLayout(layout)
        self.registerField('msnm', self.SpinmsnmBox)
        self.registerField('Tamb', self.SpinTambBox)
        

class datosDPage(QtGui.QWizardPage):
    """Cuadro de dialogo para  Variables del sistema de secado"""
    def __init__(self, parent=None):
        """Inicialización"""
        super(datosDPage, self).__init__(parent)
        self.setTitle(u'<b style=color:#eee>Sistema de secado, secador de dos pisos con inversión de flujo</b>')
        STSlabel = QtGui.QLabel(u"<b style='color:#333'>Sección transversal del Silo (m2):</b>")
        ECGlabel = QtGui.QLabel("<b style='color:#333'>Espesor de la capa de grano (m):</p>")
        intlabel = QtGui.QLabel("<b style='color:#333'>Conocer los resultados cada (hr): </b>")
        intInvlabel = QtGui.QLabel(u"<b style='color:#333'>Intervalo de inversión de flujo (hr): </b>")
                                
        
        self.STSLineEdit = QtGui.QLineEdit("2")
        self.ECGLineEdit = QtGui.QLineEdit("0.4")
        self.intLineEdit = QtGui.QLineEdit("1")
        self.intInvLineEdit = QtGui.QLineEdit("5")
        
        #layout
        layout = QtGui.QGridLayout()
        layout.addWidget(STSlabel, 0, 0)
        layout.addWidget(self.STSLineEdit, 0, 1)
        layout.addWidget(ECGlabel, 1, 0)
        layout.addWidget(self.ECGLineEdit, 1, 1)
        layout.addWidget(intlabel, 2, 0)
        layout.addWidget(self.intLineEdit, 2, 1)
        layout.addWidget(intInvlabel, 3, 0)
        layout.addWidget(self.intInvLineEdit, 3, 1)
        self.setLayout(layout)
        self.registerField('STS', self.STSLineEdit)
        self.registerField('ECG', self.ECGLineEdit)
        self.registerField('int', self.intLineEdit)
        self.registerField('intInv', self.intInvLineEdit)
        
class ConclusionPage(QtGui.QWizardPage):
    """Cuadro de dialogo para  Variables de la camara de presecado"""
    def __init__(self, parent=None):
        """Inicialización"""
        super(ConclusionPage, self).__init__(parent)
        
        self.setTitle(u"<b style='color:#eee'>Camara de presecado</b>")

        self.label = QtGui.QLabel()
        self.label.setWordWrap(True)

        HIplabel = QtGui.QLabel(u"<b style='color:#333'>Humedad inicial grano:</b>")
        TIplabel = QtGui.QLabel(u"<b style='color:#333'>Temperatura inicial grano:</b>")
        ECGplabel = QtGui.QLabel(u"<b style='color:#333'>Espesor capa de grano (m):</b>")
        
        #Humedad Inicial spin
        self.SpinHIpBox = QtGui.QSpinBox()
        self.SpinHIpBox.setRange(0, 100)
        self.SpinHIpBox.setValue(50)
        self.SpinHIpBox.setSuffix(u' % bh')
        #Humedad Final spin
        self.SpinTIpBox = QtGui.QSpinBox()
        self.SpinTIpBox.setRange(0, 100)
        self.SpinTIpBox.setValue(21)
        self.SpinTIpBox.setSuffix(u' C')
        #Espesor en m
        self.ECGpLineEdit = QtGui.QLineEdit("0.4")
        
        
        layout = QtGui.QGridLayout()
        layout.addWidget(self.label,0,0)
        layout.addWidget(TIplabel,1,0)
        layout.addWidget(self.SpinTIpBox,1,1)
        layout.addWidget(HIplabel,2,0)
        layout.addWidget(self.SpinHIpBox,2,1)
        layout.addWidget(ECGplabel,3,0)
        layout.addWidget(self.ECGpLineEdit,3,1)
        self.setLayout(layout)
        
        self.registerField('HIp', self.SpinHIpBox)
        self.registerField('TIp', self.SpinTIpBox)
        self.registerField('ECGp', self.ECGpLineEdit)
        

    def initializePage(self):
        """Inicialización"""
        finishText = self.wizard().buttonText(QtGui.QWizard.FinishButton)
        finishText.replace('&', '')
        self.label.setText(u"Haga Click en Ejecutar para iniciar la simulación." % finishText)
        self.setButtonText(QtGui.QWizard.FinishButton, "Ejecutar")
        self.setButtonText(QtGui.QWizard.CancelButton, "Cancelar")
        self.setButtonText(QtGui.QWizard.BackButton, "Atras")
        


